From: Ian Campbell Date: Wed, 1 Jun 2011 15:47:50 +0000 (+0100) Subject: hvmloader: allow create_mp_tables() to allocate the table X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~10246 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=940d37818bb79fbd37b5803fe27ef8ca1110bd54;p=xen.git hvmloader: allow create_mp_tables() to allocate the table Will be used by SeaBIOS. Signed-off-by: Ian Campbell --- diff --git a/tools/firmware/hvmloader/mp_tables.c b/tools/firmware/hvmloader/mp_tables.c index b4e16ee3e4..a1365f53ec 100644 --- a/tools/firmware/hvmloader/mp_tables.c +++ b/tools/firmware/hvmloader/mp_tables.c @@ -266,12 +266,27 @@ unsigned long create_mp_tables(void *_mpfps) int vcpu_nr, i, length; void *base; struct mp_io_intr_entry *mpiie; - struct mp_floating_pointer_struct *mpfps = _mpfps; + struct mp_floating_pointer_struct *mpfps; vcpu_nr = hvm_info->nr_vcpus; printf("Creating MP tables ...\n"); + if (!_mpfps) { + int sz; + + sz = sizeof(struct mp_floating_pointer_struct); + sz += sizeof(struct mp_config_table); + sz += sizeof(struct mp_proc_entry) * vcpu_nr; + sz += sizeof(struct mp_bus_entry); + sz += sizeof(struct mp_ioapic_entry); + sz += sizeof(struct mp_io_intr_entry) * 16; + + base = mem_alloc(sz, 0); + } + + mpfps = _mpfps; + base = &mpfps[1]; p = base + sizeof(struct mp_config_table);